package com.shrct.businessprocess.customerservice;

import com.shrct.businessprocess.customerservice.RCFaultReport;
import com.shrct.businessprocess.customerservice.RCFaultWorkItemReport;
import com.shrct.businessprocess.customerservice.RCFaultWorkItemStatus;
import com.shrct.businessprocess.customerservice.impl.RCFaultWorkItemImpl;
import com.shrct.businessprocess.customerservice.proxy.RCFaultWorkItemProxy;
import com.shrct.businessprocess.organization.RCEmployee;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = RCFaultWorkItemImpl.class)
public interface RCFaultWorkItem extends IModelObject {
  public abstract RCFaultReport getFaultReport();
  
  public abstract RCFaultWorkItem setFaultReport(final RCFaultReport faultReport);
  
  public abstract RCEmployee getWorker();
  
  public abstract RCFaultWorkItem setWorker(final RCEmployee worker);
  
  public abstract Date getAssignDate();
  
  public abstract RCFaultWorkItem setAssignDate(final Date assignDate);
  
  public abstract Date getAssignTime();
  
  public abstract RCFaultWorkItem setAssignTime(final Date assignTime);
  
  public abstract String getAssignComment();
  
  public abstract RCFaultWorkItem setAssignComment(final String assignComment);
  
  public abstract Collection<RCFaultWorkItemReport> getReports();
  
  public abstract RCFaultWorkItemReport createAndAddtoReports();
  
  public abstract RCFaultWorkItemReport createAndAddtoReports(final Procedure1<RCFaultWorkItemReport> updater);
  
  public abstract RCFaultWorkItem removeFromReports(final RCFaultWorkItemReport rCFaultWorkItemReport);
  
  public abstract RCFaultWorkItem removeAllReports();
  
  public abstract RCFaultWorkItemReport createReport(final Procedure1<? super RCFaultWorkItemReport> postInit);
  
  public abstract RCFaultWorkItemStatus getStatus();
  
  public abstract void start();
  
  public abstract void accept();
  
  public abstract void finish();
  
  public abstract Boolean isCreated();
  
  public abstract Boolean isAccepted();
  
  public abstract Boolean isFinished();
  
  public abstract RCFaultWorkItemProxy toProxy();
}
